草庐IT

flutter - 延迟 BottomNavigationBar

全部标签

c# - C# 中延迟执行和懒惰求值的区别

能否请您告诉我C#中延迟执行和惰性求值之间的确切差异是什么?这两个是同义词。有人可以举例说明区别吗? 最佳答案 实际上,它们的意思本质上是一样的。但是,最好使用术语延迟。懒惰是指“除非万不得已才去做。”延迟意味着“在调用者实际使用它之前不计算结果。”在实践中,当调用者决定使用评估结果时(即开始遍历IEnumerable),这正是需要完成“工作”的时间点(例如向数据库)。术语延迟更具体/描述了实际发生的事情。当我说我懒惰时,意思是我避免做不必要的工作;真正的含义是模棱两可的。然而,当我说执行/评估是延迟时,这实质上意味着我根本没有给你

c# - .NET 程序集的延迟签名有什么意义?

我注意到,在我使用AssemblyDelaySignAttribute指示程序集正在开发中并且现在不需要签名之后,我将不得不使用sn-Vrfoolib.dll以注册强名称验证,以便为该程序集关闭。做这个圈子有什么意义?为什么不在程序集完全完成之前不对其进行签名?这不是更麻烦吗? 最佳答案 几个原因...不能将没有强名称的程序集添加到GAC与#1相关,不在GAC中的组件不会从NGEN中获益太多在使用部分名称进行程序集探测和加载时,强命名程序集表现出不同的行为。没有强名称的程序集不能被强名称程序集引用因此,在严格控制签名过程的组织中,能

c# - C#中的延迟执行

如何在C#中实现我自己的延迟执行机制?例如我有:stringx=DoFoo();是否可以施展魔法,让DoFoo在我“使用”x之前不执行? 最佳答案 您可以使用lambdas/委托(delegate):Funcdoit=()=>DoFoo();//-or-Funcdoit=DoFoo;稍后您可以调用doit就像一个方法:stringx=doit();我想你能得到的最接近的是这样的:Lazyx=DoFoo;stringy=x;//"use"x定义为Lazy类似于此(未经测试):publicclassLazy{privatereadonl

c# - c#中For循环的时间延迟

我如何在一定的旋转后在循环中使用时间延迟?假设:for(inti=0;i我希望每8次旋转后延迟1秒。 最佳答案 有很多方法可以做到这一点:方法一:极其糟糕:忙等待:DateTimetimeToStartUpAgain=whatever;while(DateTime.Now这是一件可怕的事情;操作系统会假设你正在做有用的工作,并会分配一个CPU来做除了旋转之外的任何事情。永远不要这样做,除非您知道自旋只会持续几微秒。基本上,当您这样做时,您已经雇用了某人为您看表;那不经济。方法二:非常糟糕:休眠线程。让线程休眠也是一件可怕的事情,但没

c# - 使用 NHibernate 对延迟加载的集合进行分页

我读了thisarticle其中Ayende指出NHibernate可以(与EF4相比):Collectionwithlazy=”extra”–LazyextrameansthatNHibernateadaptstotheoperationsthatyoumightrunontopofyourcollections.Thatmeansthatblog.Posts.Countwillnotforcealoadoftheentirecollection,butratherwouldcreatea“selectcount(*)fromPostswhereBlogId=1”statement,

c# - EF 4 - 没有代理的延迟加载

我读到当我们需要使用延迟加载和更改跟踪时会使用代理。换句话说,要使用延迟加载,我必须启用代理。到目前为止一切顺利。关键是我可以使用下面的代码来设置上下文以不使用代理甚至使用延迟加载。ctx=newSchoolEntities();ctx.ContextOptions.ProxyCreationEnabled=false;ctx.ContextOptions.LazyLoadingEnabled=true;ProxyCreationEnabled属性是否仅与更改跟踪代理相关,还是我遗漏了什么?有人可以详细解释一下吗?谢谢!编辑1我没有使用POCO/DbContext。我使用带有Objec

c# - 在返回 IEnumerable 的方法中使用锁时,linq 延迟执行

考虑一个由多个线程访问的简单Registry类:publicclassRegistry{protectedreadonlyDictionary_items=newDictionary();protectedreadonlyobject_lock=newobject();publicvoidRegister(intid,stringval){lock(_lock){_items.Add(id,val);}}publicIEnumerableIds{get{lock(_lock){return_items.Keys;}}}}和典型用法:varids1=_registry.Ids;//exe

c# - 如何使用 EF Core 2.1.0 和代理进行延迟加载

我有以下模型:publicclassSession{publicintSessionID{get;set;}publicintUserID{get;set;}publicvirtualUserUser{get;set;}}publicclassUser{publicintUserID{get;set;}publicintOrganizationID{get;set;}publicvirtualICollectionSessions{get;set;}publicvirtualOrganizationOrganization{get;set;}}publicclassOrganizati

c# - 不使用空合并运算符进行延迟初始化有什么好的理由吗?

问候我今天在做一些惰性初始化代码,我想为什么不使用null合并运算符来做这件事,它更短,但后来我想这样做会有任何开销或额外成本。下面是简化的示例代码,显示了用于惰性初始化的更常见形式,然后是使用空合并运算符的形式。它们具有完全相同的结果,并且看起来是等效的。我的第一个想法是,在创建对象之后,现在可以使用??将其附加分配给自身。这不是问题吗,编译器/JIT如何优化它,是否有更邪恶的事情发生,你永远不应该用??进行延迟初始化,或者它是完全安全的,没有坏的魔力可以来自它。privateMyLazyObject_lazyObject;publicMyLazyObjectGetMyLazyObj

c# - 有没有办法在 Windows 窗体中延迟事件处理程序(比如 1 秒)

我需要能够延迟某些控件(如按钮)的事件处理程序,例如在实际事件发生1秒后(例如单击事件)...net框架可以做到这一点吗?我使用计时器并从计时器的滴答事件中调用我的代码,如下所示,但我不确定这是否是最佳方法!voidonButtonClick(..){timer1.Enabled=true;}voidonTimerTick(..){timer.Enabled=false;CallMyCodeNow();} 最佳答案 也许您可以创建一个创建计时器的方法?voidonButtonClick(objectsender,EventArgse